﻿#pragma once
#include "context.h" // 包含 context 类的声明

// evaluate 类继承自 context 类
class evaluate : public context
{
private:
    // 指向市场模拟器的指针
    class dummy_market* _market_simulator;

    // 指向交易模拟器的指针
    class dummy_trader* _trader_simulator;

    // CSV 记录器的智能指针
    std::shared_ptr<class csv_recorder> _recorder;

public:
    // 默认构造函数
    evaluate() noexcept;

    // 虚析构函数
    virtual ~evaluate() noexcept;

public:
    // 从配置文件初始化 evaluate 对象
    bool init_from_file(const std::string& config_path) noexcept;

    // 播放历史数据
    void playback_history() noexcept;

    // 模拟跨日数据
    void simulate_crossday(uint32_t trading_day) noexcept;

    // 获取交易模拟器的引用（重写父类的虚函数）
    virtual trader_api& get_trader() noexcept override;

    // 获取市场模拟器的引用（重写父类的虚函数）
    virtual market_api& get_market() noexcept override;

    // 更新操作（重写父类的虚函数）
    virtual void on_update() noexcept override;

    // 判断是否终止（重写父类的虚函数）
    virtual bool is_terminaled() noexcept override;
};
